/*!
 * 文件名称：  main.c
 * 描    述：  主函数文件
 * 版本：      2023-12-03, V1.0
*/

/*
* GD32F303东方红开发板V1.0
* 淘宝商城：   https://juwo.taobao.com
* 技术交流：   https://www.gd32bbs.com/ask/
* 视频学习：   https://space.bilibili.com/475462605
* 微信公众号： gd32bbs
* Copyright    苏州聚沃电子科技有限公司
* 版权所有，盗版必究。
*/

#include "gd32f30x.h"
#include <stdio.h>
#include "bsp_led.h"
#include "bsp_uart.h"
#include "bsp_adc.h"
#include "bsp_key.h"

#include "driver_public.h"
#include "driver_exmc.h"
#include "bsp_lcd.h"


extern const unsigned char gImage_log_picture[34808];
/*!
* 说明     main函数
* 输入     无
* 输出     无
* 返回值   无
*/
int main(void)
{    
    uint64_t tick_temp=0;
    uint16_t frames_speed=0;
    
    driver_init();       /* 延时和公共驱动部分初始化 */
    bsp_uart_init(&BOARD_UART);      /* 打印串口初始化 */  
    
    bsp_led_group_init();        /* 初始化LED组 */
    bsp_led_on(&LED0);
    bsp_led_off(&LED1); 
    
    bsp_Rocker_ADC_config();    

    delay_ms(100);
    printf("LCD examples.\r\n");    
  
    bsp_lcd_init();                 /* 初始化LCD */
        
    //计算刷整屏速度
    tick_temp=driver_tick;
    bsp_lcd_clear(WHITE);
    frames_speed=driver_tick-tick_temp;
    
    //显示log图片
    bsp_lcd_color_fill(60,0,233,99,(uint16_t*)gImage_log_picture);
    
    //设置打印窗口
    bsp_lcd_printf_init(10,109,bsp_lcd_parameter.width-1,369,FONT_ASCII_24_12,WHITE,BLUE);
    
    //打印到LCD    
    bsp_lcd_printf("GD32F303ZGT6\r\n");
    bsp_lcd_printf("EXMC LCD Brush Test\r\n");
    bsp_lcd_printf("LCD ID:%04X\r\n", bsp_lcd_parameter.id);    
    bsp_lcd_printf("* Suzhou Juwo Electronic\r\n");
    bsp_lcd_printf("* web: www.gd32bbs.com\r\n");
    bsp_lcd_printf("* B station: 475462605\r\n");
    bsp_lcd_printf("* QQ Group: 859440462\r\n");
    bsp_lcd_printf("* Taobao: juwo.taobao.com\r\n");
    bsp_lcd_printf("* Official ID: gd32bbs\r\n");        
    bsp_lcd_printf("frames brush:%d ms\r\n", frames_speed);   

    //重新设置新的打印窗口
    bsp_lcd_printf_init(0,370,bsp_lcd_parameter.width-1,bsp_lcd_parameter.height-1,FONT_ASCII_12_6,BLUE,~BLUE);

    while (1)
    {
        //将摇杆采集结果处理控制LCD亮度
        bsp_lcd_backlight_duty_set(100-(0xfff-Rocker_data[0])*100/0xfff);
        
        //打印亮度信息到LCD
        bsp_lcd_printf("* backlight is %d.",100-(0xfff-Rocker_data[0])*100/0xfff); 
        bsp_lcd_printf("    ");  
         //打印系统tick到LCD
        bsp_lcd_printf("* system tic is  %lld \r\n",driver_tick);    
        delay_ms(200);                                                  
    }
}

